//
//  RequestManager+BK.h
//  bestkeep
//
//  Created by 武探 on 2016/11/14.
//  Copyright © 2016年 utouu. All rights reserved.
//

#import "RequestManager.h"
#import "BKFileObject.h"

/**
 网络请求
 */
@interface RequestManager (BK)

/**
 获取当前时间
 */
-(nonnull NSString*)bkCurrentTime;

/**
 获取签名

 @param time 当前时间
 @param parameters 参数
 @return 签名
 */
-(nullable NSString*)bkSignWithTime:(nonnull NSString*)time parameters:(nullable NSDictionary<NSString*, id>*)parameters;

-(nonnull NSDictionary*)bkHeaderContexts:(nullable NSDictionary<NSString*, id>*)parameters validateURL:(nonnull NSString*)validateURL;

/**
 数据请求

 @param method 请求方式
 @param URLString 请求地址
 @param parameters 参数
 @param success 成功回调
 @param failure 失败回调
 */
-(void)bkDataRequest:(RequestMethod)method URLString:(nonnull NSString*)URLString parameters:(nullable NSDictionary<NSString*, id>*)parameters success:(nonnull void (^)(_Nullable id responseObject))success failure:(nonnull void(^)(_Nullable id responseObject,  NSError * _Nullable error))failure;

/**
 上传

 @param method 请求方式
 @param URLString 请求地址
 @param parameters 参数
 @param file 文件
 @param success 成功回调
 @param failure 失败回调
 */
-(void)bkUploadRequest:(RequestMethod)method URLString:(nonnull NSString*)URLString parameters:(nullable NSDictionary<NSString*, id>*)parameters file:(nonnull BKFileObject*)file success:(nonnull void (^)(_Nullable id responseObject))success failure:(nonnull void(^)(_Nullable id responseObject, NSError * _Nullable error))failure;

/**
 上传（带进度）

 @param method 请求方式
 @param URLString 请求地址
 @param parameters 参数
 @param file 文件
 @param progress 进度
 @param success 成功回调
 @param failure 失败回调
 */
-(void)bkUploadRequest:(RequestMethod)method URLString:(nonnull NSString*)URLString parameters:(nullable NSDictionary<NSString*, id>*)parameters file:(nonnull BKFileObject*)file progress:(nullable void (^)(int64_t totalUnitCount, int64_t completedUnitCount))progress success:(nonnull void (^)(_Nullable id responseObject))success failure:(nonnull void(^)(_Nullable id responseObject, NSError * _Nullable error))failure;

/**
 多文件上传 （由于服务端限制，此方法暂时不建议使用）

 @param method 请求方式
 @param URLString 请求地址
 @param parameters 参数
 @param files 文件集合
 @param progress 进度
 @param success 成功回调
 @param failure 失败回调
 */
-(void)bkUploadRequest:(RequestMethod)method URLString:(nonnull NSString*)URLString parameters:(nullable NSDictionary<NSString*, id>*)parameters files:(nonnull NSArray<BKFileObject*>*)files progress:(nullable void (^)(int64_t totalUnitCount, int64_t completedUnitCount))progress success:(nonnull void (^)(_Nullable id responseObject))success failure:(nonnull void(^)(_Nullable id responseObject, NSError * _Nullable error))failure;


@end
